package com.wolfword.crawler.server.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.wolfword.common.dao.BaseDao;
import com.wolfword.crawler.server.entity.CrawlTaskEntity;

/**
 * 
 * @author ServerZhang
 * @date 2018年1月11日
 */
@Repository
public interface CrawlTaskDao extends BaseDao<CrawlTaskEntity> {

	/**
	 * 获取待处理任务
	 * @param count
	 * @return
	 * @author ServerZhang
	 * @date 2018年1月11日
	 */
	List<CrawlTaskEntity> listUncrawled(@Param("count")Integer count);
	
	/**
	 * 修改状态
	 * @param ids id串
	 * @param status
	 * @author ServerZhang
	 * @date 2018年1月11日
	 */
	void changeStatus(@Param("ids")List<Long> ids, @Param("status")Integer status, 
			@Param("requestLogId")Long logId,@Param("clientName")String clientName,
			@Param("clientIp")String clientIp,  @Param("clientPort")Integer clientPort);

	/**
	 * 批量更新
	 * @param data
	 * @author ServerZhang
	 * @date 2018年1月12日
	 */
	void batchUpdate(@Param("list")List<CrawlTaskEntity> list);
	
	/**
	 * 根据根网址指添加到任务
	 * @param rootIds
	 * @author ServerZhang
	 * @date 2018年1月17日
	 */
	void batchInsertByRootId(@Param("rootIds")String rootIds);
	
	List<CrawlTaskEntity> list(@Param("url")String url, @Param("parentUrl")String parentUrl,
			@Param("containStr")String containStr, @Param("rootUrlId")Long rootUrlId, 
			@Param("status")Integer status, @Param("sortType")Integer sortType);
	
	/**
	 * 任务统计分析
	 * @param urls
	 * @param sortType
	 * @return
	 * @author ServerZhang
	 * @date 2018年1月25日
	 */
	List<CrawlTaskEntity> statistic(@Param("url")String urls, @Param("sortType")Integer sortType);
	
 }
